package com.hmall.vo;

import java.math.BigDecimal;
import java.util.Date;

/**
 * @ClassName AuctionVo
 * @Description
 * @Author zhoutao
 * @Date 2018/12/26 10:45
 * @Version 2.0
 **/
public class AuctionVo {

    /**
     * 竞拍编号
     */
    private String packageNo;

    /**
     * 竞拍名称
     */
    private String packageName;

    /**
     * 每次竞拍最低加价
     */
    private BigDecimal lowestPrice;

    /**
     * 起拍价
     */
    private BigDecimal startPrice;

    /**
     * 当前最高价
     */
    private BigDecimal highestPrice;

    /**
     * 竞拍的最终价格
     */
    private BigDecimal finishPrice;

    /**
     * 自己竞拍的钱
     */
    private BigDecimal selfPrice;

    /**
     * 起拍时间
     */
    private Date startTime;

    /**
     * 终止时间
     */
    private Date endTime;

    /**
     * 剩余时间
     */
    private Long restTime;

    /**
     * 竞拍次数
     */
    private Integer auctionCount;

    /**
     * 当前竞拍状态
     * 0 预热中 1 竞拍中 2竞拍成功 3流拍
     */
    private Integer status;

    private Integer applyStatus;

    public AuctionVo(Builder builder){
        this.packageNo = builder.packageNo;
        this.packageName = builder.packageName;
        this.lowestPrice = builder.lowestPrice;
        this.startPrice = builder.startPrice;
        this.highestPrice = builder.highestPrice;
        this.finishPrice = builder.finishPrice;
        this.startTime = builder.startTime;
        this.endTime = builder.endTime;
        this.restTime = builder.restTime;
        this.auctionCount = builder.auctionCount;
        this.status = builder.status;
        this.selfPrice = builder.selfPrice;
        this.applyStatus = builder.applyStatus;
    }
    public static class Builder{

        private String packageNo;

        private String packageName;

        private BigDecimal lowestPrice;

        private BigDecimal startPrice;

        private BigDecimal highestPrice;

        private BigDecimal finishPrice;

        private BigDecimal selfPrice;

        private Date startTime;

        private Date endTime;

        private Long restTime;

        private Integer auctionCount;

        private Integer status;

        private Integer applyStatus;


        public Builder packageNo(String val){
            this.packageNo = val;
            return this;
        }

        public Builder packageName(String val){
            this.packageName = val;
            return this;
        }

        public Builder lowestPrice(BigDecimal val){
            this.lowestPrice = val;
            return this;
        }

        public Builder startPrice(BigDecimal val){
            this.startPrice = val;
            return this;
        }

        public Builder highestPrice(BigDecimal val){
            this.highestPrice = val;
            return this;
        }

        public Builder selfPrice(BigDecimal val){
            this.selfPrice = val;
            return this;
        }

        public Builder finishPrice(BigDecimal val){
            this.finishPrice = val;
            return this;
        }

        public Builder startTime(Date val){
            this.startTime = val;
            return this;
        }

        public Builder endTime(Date val){
            this.endTime = val;
            return this;
        }

        public Builder restTime(Long val){
            this.restTime = val;
            return this;
        }

        public Builder auctionCount(Integer val){
            this.auctionCount = val;
            return this;
        }

        public Builder status(Integer val){
            this.status = val;
            return this;
        }

        public Builder applyStatus(Integer val){
            this.applyStatus = val;
            return this;
        }
        public AuctionVo build(){
            return new AuctionVo(this);
        }
    }

    public String getPackageNo() {
        return packageNo;
    }

    public String getPackageName() {
        return packageName;
    }

    public BigDecimal getLowestPrice() {
        return lowestPrice;
    }

    public BigDecimal getStartPrice() {
        return startPrice;
    }

    public BigDecimal getHighestPrice() {
        return highestPrice;
    }

    public BigDecimal getFinishPrice() {
        return finishPrice;
    }

    public BigDecimal getSelfPrice() {
        return selfPrice;
    }

    public Date getStartTime() {
        return startTime;
    }

    public Date getEndTime() {
        return endTime;
    }

    public Long getRestTime() {
        return restTime;
    }

    public Integer getAuctionCount() {
        return auctionCount;
    }

    public Integer getStatus() {
        return status;
    }

    public Integer getApplyStatus() {
        return applyStatus;
    }
}
